import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:test/network/dio_helper.dart';

class FileUtil {
  // 下载远程文件
  static Future<File?> downloadFile(String url, String fileName) async {
    try {
      // 获取应用的文档目录
      Directory appDocDir = await getApplicationDocumentsDirectory();
      String filePath = '${appDocDir.path}/$fileName';

      await DioHelper.getInstance().download(url, filePath);

      return File(filePath);
    } catch (e) {
      debugPrint('下载文件时出错: $e');
      return null;
    }
  }

  // 上传文件到服务器
  static Future<bool> uploadFile(String filePath, String uploadUrl) async {
    try {
      // 创建表单数据
      FormData formData = FormData.fromMap({
        'file': await MultipartFile.fromFile(filePath),
      });

      // 发送上传请求
      Response response = await DioHelper.getInstance().post(uploadUrl, data: formData);

      // 检查响应状态码
      if (response.statusCode == 200) {
        return true;
      } else {
        debugPrint('文件上传失败，状态码: ${response.statusCode}');
        return false;
      }
    } catch (e) {
      debugPrint('上传文件时出错: $e');
      return false;
    }
  }

  // 获取本地文件列表
  static Future<List<File>> getLocalFiles() async {
    try {
      // 获取应用的文档目录
      Directory appDocDir = await getApplicationDocumentsDirectory();
      // 获取目录下的所有文件
      List<FileSystemEntity> entities = appDocDir.listSync();
      // 过滤出文件
      List<File> files = entities.whereType<File>().toList();
      return files;
    } catch (e) {
      debugPrint('获取本地文件列表时出错: $e');
      return [];
    }
  }

  // 删除本地文件
  static Future<bool> deleteLocalFile(String filePath) async {
    try {
      File file = File(filePath);
      if (await file.exists()) {
        await file.delete();
        return true;
      } else {
        debugPrint('文件不存在: $filePath');
        return false;
      }
    } catch (e) {
      debugPrint('删除本地文件时出错: $e');
      return false;
    }
  }
}
